home *** CD-ROM | disk | FTP | other *** search
/ The Guided Tour of Multimedia (Second Edition) / The Guided Tour of Multimedia (Second Edition).iso / trials / director / evalcopy / director.z / XOBJECT.H < prev   
C/C++ Source or Header  |  1994-06-02  |  6KB  |  152 lines

  1. #ifndef __XObject__
  2. #define __XObject__
  3. /* --
  4. XObject inferface for Windows Lingo 3.0.
  5.  
  6. 24may94    JT    Added mem_ReverseBytes.
  7. 05feb93    JT    Added more call backs.
  8. 25aug92    JT    Resurrected from the dead.
  9. -- */
  10.  
  11. /*
  12. ------------------------------------------------------------------------------
  13. Constants:
  14. ------------------------------------------------------------------------------
  15. */
  16. /* -- Lingo data type codes. non-handles */
  17. #define TY_NULL         (0)     // Null Type
  18. #define TY_NOVALUE      (2)     // No Return Value ("X")
  19. #define TY_LONGINT      (4)     // Integer ("I")
  20. #define TY_SYMBOL       (8)     // Symbol Type
  21. #define TY_STRING_PTR   (10)    // String Pointer Type 
  22.  
  23. /* -- Lingo data type codes. handles */
  24. #define TY_STRING       (1)     // Null-terminated string handle ("S")
  25. #define TY_OBJECT       (3)     // XObject instance handle ("O")
  26. #define TY_PICTURE      (5)     // Metafile handle ("P")
  27. #define TY_FLOAT        (9)     // Long double handle Type
  28.  
  29.  
  30. /*
  31. ------------------------------------------------------------------------------
  32. Types:
  33. ------------------------------------------------------------------------------
  34. */
  35.  
  36. /* -- A typed value -- */
  37. typedef struct
  38. {
  39.     short   ty;                 /* -- Type code -- */
  40.     long    it;                 /* -- Some datum. handle if a TY_STRING -- */
  41. }       LxValue, *LxValuePtr;
  42.  
  43. /* -- Memory management interface -- */
  44. typedef void *LxMemPtr;
  45. typedef void **LxMemHandle;
  46.  
  47. typedef void (*LxMsgProcPtr) (void);
  48.  
  49. /* -- Call backs to Lingo -- */
  50. typedef struct
  51. {
  52.     long    version;
  53.     void    (__far __pascal *xobj_Dispose)        (LxMemHandle xobj);
  54.     LxMemHandle(__far __pascal *mem_New)          (long size,
  55.                                                    BOOL zeroInit);
  56.     void    (__far __pascal *mem_Dispose)         (LxMemHandle hdl);
  57.     LxMemHandle(__far __pascal *mem_SetSize)      (LxMemHandle hdl,
  58.                                                    long newSize);
  59.     long    (__far __pascal *mem_GetSize)         (LxMemHandle hdl);
  60.     LxMemPtr(__far __pascal *mem_Lock)            (LxMemHandle hdl);
  61.     void    (__far __pascal *mem_Unlock)          (LxMemHandle hdl);
  62.     LxMemHandle(__far __pascal *mem_Clone)        (LxMemHandle hdl);
  63.     LxMemHandle(__far __pascal *mem_AppendPtr)    (LxMemHandle hdl,
  64.                                                    LxMemPtr src,
  65.                                                    long count);
  66.     BOOL    (__far __pascal *mem_Equal)           (LxMemHandle hdl1,
  67.                                                    LxMemHandle hdl2);
  68.     void    (__far __pascal *mem_Copy)            (LxMemPtr dest,
  69.                                                    LxMemPtr src,
  70.                                                    long count);
  71.     void    (__far __pascal *mem_ZeroPtr)         (LxMemPtr dest,
  72.                                                    long count);
  73.     LxMemHandle(__far __pascal *string_New)       (LPSTR str);
  74.  
  75.     void    (__far __pascal *showMsg)             (LPSTR str);
  76.     HWND    (__far __pascal *getStageWindow)      (void);
  77.     long    (__far __pascal *register_QTActor)    (LxMemHandle me,
  78.                                                    LPSTR fileType,
  79.                                                    BOOL install);
  80.     long    (__far __pascal *register_StageEar)   (LxMemHandle me,
  81.                                                    long msg,
  82.                                                    BOOL install);
  83.  
  84.     BOOL    (__far __pascal *fileDlg_SaveAs)      (LPSTR szTitleIn,
  85.                                                    LPSTR szDefSpec,
  86.                                                    LPSTR szFileNameIn);
  87.     BOOL    (__far __pascal *fileDlg_Open)        (LPSTR szTitleIn,
  88.                                                    LPSTR szDefSpec,
  89.                                                    LPSTR szFileNameIn);
  90.  
  91.     void    (__far __pascal *ConvertMACToDosPath) (LPSTR macPath,
  92.                                                    LPSTR dosPath,
  93.                                                    short maxDosPathLen);
  94.     void    (__far __pascal *ConvertDosPathToMAC) (LPSTR path);
  95.  
  96.     LxMemHandle(__far __pascal *GetLingoGlobal)   (LPSTR symbolBuf);
  97.     void    (__far __pascal *SetLingoGlobal)      (LPSTR symbolBuf,
  98.                                                    LxMemHandle newValue);
  99.  
  100.     void    (__far __pascal *ConvertSymbolToStr)  (long symbolid,
  101.                                                    LPSTR symbolBuf);
  102.     long    (__far __pascal *ConvertStrToSymbol)  (LPSTR symbolBuf);
  103.  
  104.     void    (__far __pascal *SendPerform)         (long nargs,
  105.                                                    LxValuePtr argPtr,
  106.                                                    LxMemHandle obj);
  107.  
  108.     LxMemHandle(__far __pascal *FindFactory)      (LPSTR symbolBuf);
  109.  
  110.  
  111.     char    (__far __pascal *SetOverrideDrive)    (char driveLetter);
  112.  
  113.     void    (__far __pascal *ResetPalette)        (void);
  114.  
  115.     void     (__far __pascal *mem_ReverseBytes)
  116.                 (void __huge * ptr, char* structDef, long entrySize, long len);
  117.  
  118. }       LxProcTable, *LxProcTablePtr;
  119.  
  120. /* -- The xobject header. All instance must start with this -- */
  121. typedef struct
  122. {
  123.     long    reserved1;          /* -- Reserved for interal use */
  124.     long    reserved2;          /* -- Reserved for interal use */
  125.     long    reserved3;          /* -- Reserved for interal use */
  126.     long    reserved4;          /* -- Reserved for interal use */
  127. }       LxXObjHeader, *LxXObjHeaderPtr;
  128.  
  129.  
  130. /*
  131. ------------------------------------------------------------------------------
  132. Variables:
  133. ------------------------------------------------------------------------------
  134. */
  135.  
  136.  
  137. /*
  138. ------------------------------------------------------------------------------
  139. Functions:
  140. ------------------------------------------------------------------------------
  141. */
  142.  
  143.  
  144. /*
  145. ------------------------------------------------------------------------------
  146. Macros:
  147. ------------------------------------------------------------------------------
  148. */
  149.  
  150.  
  151. #endif
  152.